Liskov substitution principle
Circle–ellipse problem
Composition over inheritance
Program refinement
Referential transparency
Type signature
SOLID
– the "L" in "SOLID" stands for Liskov substitution principle
https://en.wikipedia.org/wiki/Liskov_substitution_principle